package thefirst.member.model;

import java.sql.SQLException;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import thefirst.LessonBoard.model.LessonBoardVO;
import thefirst.code.model.CodeDao;
import thefirst.code.model.CodeVO;
import thefirst.common.PagingBean;
import thefirst.support.model.NoticeListVO;
import thefirst.support.model.NoticeVO;

/**
 * MemberServiceImpl
 * 회원들에게 제공되는 서비스를 제공하는 클래스
 * @author kosta-00-30
 *
 */
@Service
public class MemberServiceImpl implements MemberService{
	@Resource(name="studentOfMemberDaoImpl")
	private MemberDao studentOfmemberDao;	
	
	@Resource(name="studentOfMemberDaoImpl")
	private StudentOfMemberDaoImpl studentOfMemberDaoImpl;
	
	@Resource(name="teacherOfMemberDaoImpl")
	private MemberDao teacherOfmemberDao;
	@Resource(name="teacherOfMemberDaoImpl")
	private TeacherOfMemberDaoImpl teacherOfmemberDaoImpl;
	@Resource(name="codeDaoImpl")
	private CodeDao codeDao;	
	@Override
	public void registerMember(MemberVO mvo) throws SQLException {
		if(mvo.getMembertype().equals("s")){
			studentOfmemberDao.registerMember(mvo);	
		}else if(mvo.getMembertype().equals("t")){
			teacherOfmemberDao.registerMember(mvo);
		}
	}
	
	// 회원의 정보를 조회하는 메서드 
	@Override
	public MemberVO showMember(MemberVO mvo) throws SQLException {
		MemberVO rmvo=null;
		
		if(mvo.getMembertype().equals("s")){
			rmvo=studentOfmemberDao.showMember(mvo);
		}else if(mvo.getMembertype().equals("t")){
			rmvo=teacherOfmemberDao.showMember(mvo);
		}
		rmvo.setId(mvo.getId());
		return rmvo;
	}
	@Override
	public int isExistId(MemberVO mvo) throws SQLException {	
		int result=0;
		if(mvo.getMembertype().equals("t")){
			result=teacherOfmemberDao.isExistId(mvo);	
			System.out.println("service:"+result);
			
		}else if(mvo.getMembertype().equals("s")){
			result=studentOfmemberDao.isExistId(mvo);	
		}
		return result;
	}
	/*@Override
	public int upload(TeacherVO tvo) throws SQLException{
		return teacherOfmemberDao.upload(tvo);
	}*/
	
	/**
	 * updateMember 를 실행하는 메서드
	 * MemberVO의 있는 내용만 수정한다.
	 * 선생님인지 학생인지 구분하고
	 * 변경된 항목에 따라 다른 Dao계층의 메서드를 호출한다.
	 * update가 무사히 이루어지면 showMember를 통해 변경된 사항을 로딩한다.
	 */
	@Override
	public MemberVO updateMember(MemberVO mvo) throws SQLException {
		// TODO Auto-generated method stub
		MemberVO rmvo=null;
		
		if(mvo.getMembertype().equals("s")){//학생정보 관련 메서드
			if(mvo.getName()!=null){
				if(studentOfmemberDao.updateName(mvo)==1){
					rmvo=studentOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getGender()!=null){
				System.out.println("update Gender before");
				if(studentOfmemberDao.updateGender(mvo)==1){
					System.out.println("update Gender after");
					rmvo=studentOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getTel()!=null){
				if(studentOfmemberDao.updateTel(mvo)==1){
					rmvo=studentOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getEmail()!=null){
				if(studentOfmemberDao.updateEmail(mvo)==1){
					rmvo=studentOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getHoperegion()!=null){
				if(studentOfmemberDao.updateHoperegion(mvo)==1){
					rmvo=studentOfmemberDao.showMember(mvo);
				}
			}	
		}else if(mvo.getMembertype().equals("t")){//선생님정보 관련 메서드
			if(mvo.getName()!=null){
				if(teacherOfmemberDao.updateName(mvo)==1){
					rmvo=teacherOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getGender()!=null){
				if(teacherOfmemberDao.updateGender(mvo)==1){
					rmvo=teacherOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getTel()!=null){
				if(teacherOfmemberDao.updateTel(mvo)==1){
					rmvo=teacherOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getEmail()!=null){
				if(teacherOfmemberDao.updateEmail(mvo)==1){
					rmvo=teacherOfmemberDao.showMember(mvo);
				}
			}else if(mvo.getHoperegion()!=null){
				if(teacherOfmemberDao.updateHoperegion(mvo)==1){
					rmvo=teacherOfmemberDao.showMember(mvo);
				}
			}	
		}
		return rmvo;
	}
	
	/**
	 * updateTeacher,updateStudent
	 * 두개의 메서드는 공통적이지 않은 사항들을 수정한다.
	 */
	@Override
	public MemberVO updateTeacher(TeacherVO tvo) throws SQLException {
		// TODO Auto-generated method stub
		MemberVO rmvo=null;
		System.out.println("memberService : "+tvo.getAvailabletime());
		if(tvo.getOriginalfilename()!=null&&tvo.getSavefilename()!=null){
			if(teacherOfmemberDaoImpl.updatePicture(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getHopesubject()!=null){
			if(teacherOfmemberDaoImpl.updateHopesubject(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getHopegender()!=null){
			if(teacherOfmemberDaoImpl.updateHopegender(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getAvailablestudent()!=null){
			if(teacherOfmemberDaoImpl.updateAvailablestudent(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getAvailableday()!=null&&tvo.getAvailabletime()!=null){
			if(teacherOfmemberDaoImpl.updateAvailableday(tvo)==1&&teacherOfmemberDaoImpl.updateAvailabletime(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getUniversity()!=null){
			if(teacherOfmemberDaoImpl.updateUniversity(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}else if(tvo.getIntro()!=null){
			if(teacherOfmemberDaoImpl.updateIntro(tvo)==1){
				rmvo=teacherOfmemberDao.showMember(tvo);
			}
		}
		return rmvo;
	}

	@Override
	public MemberVO updateStudent(StudentVO svo) throws SQLException {
		// TODO Auto-generated method stub
		MemberVO rmvo=null;
		
		if(svo.getGrade()!=null){
			if(studentOfMemberDaoImpl.updateGrade(svo)==1){
				rmvo=studentOfmemberDao.showMember(svo);
			}
		}else if(svo.getHopesubject()!=null){
			if(studentOfMemberDaoImpl.updateHopesubject(svo)==1){
				rmvo=studentOfmemberDao.showMember(svo);
			}
		}else if(svo.getCodeaddress()!=null&&svo.getSubaddress()!=null){
			if(studentOfMemberDaoImpl.updateAddress(svo)==1){
				rmvo=studentOfmemberDao.showMember(svo);
			}
		}
		return rmvo;
	}
	
	/**
	 * 아이디와 패스워드를 입력받아 학생Dao와
	 * 선생님Dao 접근해서 rmvo가 null이 아니면 학생이며
	 * rmvo가 null 이면 선생님이다.
	 */
	@Override
	public MemberVO login(MemberVO mvo) throws SQLException {
		MemberVO rmvo=
				studentOfmemberDao.login(mvo);
		if(rmvo==null){
			rmvo=teacherOfmemberDao.login(mvo);
			if(rmvo==null){
			System.out.println("MemberServiceImpl login : 선생님, 학생 테이블 둘다 아이디가 없습니다.");
			}else{
			rmvo.setMembertype("t");
			rmvo.setId(mvo.getId());
			}
		}else{//학생 테이블에 회원 존재..
			rmvo.setMembertype("s");
			rmvo.setId(mvo.getId());
		}
		return rmvo;
	}
	/**
	 * 학생찾기 첫페이지에 필요한 tableList가져오기
	 */
	@Override
	public StudentListVO getStudentListBasic(String pageNo) throws SQLException {
		int pn=1;
		if(pageNo!=null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			pn=Integer.parseInt(pageNo);
		}
		List<?> list=studentOfMemberDaoImpl.getStudentListBasic(pageNo);
		int total=studentOfmemberDao.selectTotalMemberCount();
		PagingBean pagingBean=new PagingBean(total,pn);
		return new StudentListVO(list, pagingBean);	
	}
	
	/**
	 * 학생찾기-전체보기-검색조건에 따른 검색을 Dao에 요청하는 메서드
	 */
	@Override
	public StudentListVO getSearchStudentbyTotal(MemberSearchVO memberSearchVO)	throws SQLException {
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		System.out.println("Service:"+memberSearchVO);
		List<?> list= studentOfMemberDaoImpl.getListStudentbyTotal(memberSearchVO);	
		int total=list.size();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new StudentListVO(list, pagingBean);
	}

	/**
	 * 학생찾기페이지-학년별 tab-학년과 이름을 받아서 검색(학생 이름은 없을 수도 있다.)
	 */
	@Override
	public StudentListVO getSearchStudentbyGrade(MemberSearchVO memberSearchVO)	throws SQLException {	
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= studentOfMemberDaoImpl.getListStudentbyGrade(memberSearchVO);
		int total=list.size();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new StudentListVO(list, pagingBean);
	}
	
	/**
	 * 학생찾기페이지-과목별 tab-희망과목과 이름을 받아서 검색(학생 이름은 없을 수도 있다.)
	 */
	@Override
	public StudentListVO getSearchStudentbySubject(MemberSearchVO memberSearchVO)throws SQLException {
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= studentOfMemberDaoImpl.getListStudentbySubject(memberSearchVO);
//		System.out.println("서비스getListStudentbySubject : 전체 리스트의 수 "+list.size()+"전체 리스트 "+list.toString());
		int total=studentOfMemberDaoImpl.getListStudentbySubjectCount(memberSearchVO);	//리스트의 카운트 가져오기
		System.out.println("memberdao : " + total);
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new StudentListVO(list, pagingBean);
	}
	
	/**
	 * 학생찾기페이지-지역별 tab-희망지역과 이름을 받아서 검색(학생 이름은 없을 수도 있다.)
	 */
	@Override	
	public StudentListVO getSearchStudentbyRegion(MemberSearchVO memberSearchVO)throws SQLException {
		System.out.println("서비스Impl : "+memberSearchVO.getPageNo());
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
			System.out.println("서비스Impl setting 후: "+memberSearchVO.getPageNo());
		}

		List<?> list= studentOfMemberDaoImpl.getListStudentbyRegion(memberSearchVO);	
		int total=list.size();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new StudentListVO(list, pagingBean);
	}
	
	/**
	 * 학생검색에서 희망과목 셀렉트박스에 보여줄 시도를 codeMaster에서 가져온다.
	 */	
	@Override
	public List<CodeVO> sidoList() throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList("F000");
		return listVo;
	}
	/**
	 * 학생검색에서 희망과목 셀렉트박스에 보여줄 과목명을 codeMaster에서 가져온다.
	 */
	@Override
	public List<CodeVO> hopeSubjectList() throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList("C000");
		return listVo;
	}

	/**
	 * 이름과 이메일을 이용하여 ID를 가져온다.
	 * 학생에서 없을 경우 -> 선생님
	 * 선생님에서 없을 경우 -> 메세지 출력 
	 * 학생검색에서 성별 셀렉트박스에 보여줄 과목명을 codeMaster에서 가져온다.
	 */
	@Override
	public List<CodeVO> genderList() throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList("A000");
		return listVo;
	}
	/**
	 * 학생검색에서 학년 셀렉트박스에 보여줄 과목명을 codeMaster에서 가져온다.
	 */
	@Override
	public List<CodeVO> gradeList() throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList("D000");
		return listVo;
	}

	/**
	 * 학생찾기 페이지에서 시도를 선택한 다음 구군정보를 가져오기
	 * 파라미터는 시도의 코드번호(code_code)이다.
	 */
	@Override
	public List<CodeVO> gugunList(String code_type) throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList(code_type);
		return listVo;
	}

	@Override
	public List<String> getUniversityName(String term) throws SQLException {
		List<String> listVo=teacherOfmemberDaoImpl.getUniversityName(term);
		return listVo;
	}
	/**
	 * 학생찾기 - 지역별 tab-첫페이지(또는 특정 페이지) 가져오기
	 */
	@Override
	public StudentListVO getStudentRegionList(String pageNo) throws SQLException {
		int pn=1;
		MemberSearchVO memberSearchVO=new MemberSearchVO();
		memberSearchVO.setPageNo(pageNo);
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list=studentOfMemberDaoImpl.getMemberListRegion(memberSearchVO);
		int total=studentOfmemberDao.selectTotalMemberCount();
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return new StudentListVO(list, pagingBean);
	}
	/**
	 * 학생찾기 - 과목별 tab-첫페이지 가져오기
	 */
	@Override
	public StudentListVO getStudentSubjectList(String pageNo) throws SQLException {
		int pn=1;
		MemberSearchVO memberSearchVO=new MemberSearchVO();
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}else{
			memberSearchVO.setPageNo(pageNo);
		}
		List<?> list=studentOfMemberDaoImpl.getMemberListSubject(memberSearchVO);	
		int total=studentOfmemberDao.selectTotalMemberCount();
		PagingBean pagingBean=new PagingBean(total,pn);
		return new StudentListVO(list, pagingBean);
	}
	/**
	 * 학생찾기 - 학교학년별 tab-첫페이지 가져오기
	 */
	@Override
	public StudentListVO getStudentGradeList(String pageNo) throws SQLException {
		int pn=1;
		MemberSearchVO memberSearchVO=new MemberSearchVO();
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}else{
			memberSearchVO.setPageNo(pageNo);
		}
		List<?> list=studentOfMemberDaoImpl.getMemberListGrade(memberSearchVO);	
		int total=studentOfmemberDao.selectTotalMemberCount();
		PagingBean pagingBean=new PagingBean(total,pn);
		return new StudentListVO(list, pagingBean);
	}

	/**
	 * 선생님찾기 첫페이지에 필요한 tableList가져오기
	 */
	@Override
	public TeacherListVO getTeacherListBasic(String pageNo) throws SQLException {
		int pn=1;
		if(pageNo!=null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			pn=Integer.parseInt(pageNo);
		}
		List<?> list=teacherOfmemberDaoImpl.getTeacherListBasic(pageNo);
		int total=teacherOfmemberDao.selectTotalMemberCount();
		PagingBean pagingBean=new PagingBean(total,pn);
		return new TeacherListVO(list, pagingBean);	
	}
	
	/**
	 * 선생님찾기 - 지역별 검색결과 가져오기
	 */
	@Override
	public TeacherListVO getTeacherRegionList(MemberSearchVO msvo) throws SQLException {
		int total=0;
		String pageNo=msvo.getPageNo();
		if(pageNo==null||pageNo==""){
			msvo.setPageNo("1");
			pageNo="1";
		}
		List<?> list=null;
		if(msvo.getHoperegion()==null){
			list=teacherOfmemberDaoImpl.getTeacherListBasic(pageNo);
			total=teacherOfmemberDaoImpl.totalTeacherContent();
			System.out.println("total teacher content:"+total);
		}else{
			list=teacherOfmemberDaoImpl.getListTeacherbyRegion(msvo);
			total=teacherOfmemberDaoImpl.totalTeacherContetnByRegion(msvo);
			System.out.println("total teacher content region:"+total);
		}
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		return new TeacherListVO(list, paging);
	}
	/**
	 * 선생님찾기 - 과목별 검색결과
	 */
	@Override
	public TeacherListVO getTeacherSubjectList(MemberSearchVO msvo) throws SQLException {
		int total=0;
		String pageNo=msvo.getPageNo();
		if(pageNo==null||pageNo==""){
			msvo.setPageNo("1");
			pageNo="1";
		}
		List<?> list=null;
		if(msvo.getHopesubject()==null){
			list=teacherOfmemberDaoImpl.getTeacherListBasic(pageNo);
			total=teacherOfmemberDaoImpl.totalTeacherContent();
			System.out.println("total teacher content:"+total);
		}else{
			list=teacherOfmemberDaoImpl.getListTeacherbySubject(msvo);
			total=teacherOfmemberDaoImpl.totalTeacherContetnBySubject(msvo);
			System.out.println("total teacher content subject:"+list+total);
		}
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		return new TeacherListVO(list, paging);
	}
	
	/**
	 * 선생님찾기 - 출신학교별 tab-첫페이지 가져오기
	 */
	@Override
	public TeacherListVO getTeacherUniversityList(MemberSearchVO msvo) throws SQLException {
		int total=0;
		String pageNo=msvo.getPageNo();
		if(pageNo==null||pageNo==""){
			msvo.setPageNo("1");
			pageNo="1";
		}
		List<?> list=null;
		if(msvo.getUniversity()==null){
			list=teacherOfmemberDaoImpl.getTeacherListBasic(pageNo);
			total=teacherOfmemberDaoImpl.totalTeacherContent();
			System.out.println("total teacher content:"+total);
		}else{
			list=teacherOfmemberDaoImpl.getTeacherListUniversity(msvo);
			total=teacherOfmemberDaoImpl.totalTeacherContetnByUniversity(msvo);
			System.out.println("total teacher content university:"+total);
		}
		PagingBean paging=new PagingBean(total, Integer.parseInt(pageNo));
		return new TeacherListVO(list, paging);
	}	

	/**
	 * 선생님 찾기- 전체보기-검색조건에 맞는 선생님 정보 가져오기
	 */
	@Override
	public TeacherListVO getSearchTeacherbyTotal(MemberSearchVO memberSearchVO)
			throws SQLException {
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= teacherOfmemberDaoImpl.getListTeacherbyTotal(memberSearchVO);	
//		System.out.println("서비스getSearchStudentbyGrade : 전체 리스트의 수 "+list.size()+"전체 리스트 "+list.toString());
		int total=teacherOfmemberDao.selectTotalMemberCount();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new TeacherListVO(list, pagingBean);
	}
	
	/**
	 * 선생님찾기페이지-지역별 tab-희망지역과 이름을 받아서 검색(선생님 이름은 없을 수도 있다.)
	 */
	@Override	
	public TeacherListVO getSearchTeacherbyRegion(MemberSearchVO memberSearchVO)throws SQLException {
	
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= teacherOfmemberDaoImpl.getListTeacherbyRegion(memberSearchVO);	//다이나믹 sql 로 처리......
//		System.out.println("서비스getListStudentbyRegion : 전체 리스트의 수 "+list.size()+"전체 리스트 "+list.toString());
		int total=teacherOfmemberDao.selectTotalMemberCount();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new TeacherListVO(list, pagingBean);
	}
	
	/**
	 * 선생님찾기페이지-지역별 tab-희망지역과 이름을 받아서 검색(선생님 이름은 없을 수도 있다.)
	 */
	@Override	
	public TeacherListVO getSearchTeacherbySubject(MemberSearchVO memberSearchVO)throws SQLException {	
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= teacherOfmemberDaoImpl.getListTeacherbySubject(memberSearchVO);	//다이나믹 sql로 처리......
//		System.out.println("서비스getListStudentbyRegion : 전체 리스트의 수 "+list.size()+"전체 리스트 "+list.toString());
		int total=teacherOfmemberDao.selectTotalMemberCount();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new TeacherListVO(list, pagingBean);
	}

	/**
	 * 선생님찾기페이지-출신대학별 tab-출신대학과 이름을 받아서 검색(선생님 이름은 없을 수도 있다.)
	 */
	@Override
	public TeacherListVO getSearchTeacherbyUniversity(
			MemberSearchVO memberSearchVO) throws SQLException {
		if(memberSearchVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			memberSearchVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		List<?> list= teacherOfmemberDaoImpl.getListTeacherbyUniversity(memberSearchVO);	//다이나믹 sql로 처리......
	System.out.println("서비스getListStudentbyRegion : 전체 리스트의 수 "+list.size()+"전체 리스트 "+list.toString());
		int total=teacherOfmemberDao.selectTotalMemberCount();	//리스트의 카운트 가져오기
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(memberSearchVO.getPageNo()));
		return  new TeacherListVO(list, pagingBean);
	}	

	@Override
	public StudentVO getStudentInfobyId(StudentVO svo) throws SQLException {
		return studentOfMemberDaoImpl.getStudentInfobyId(svo);		
	}
	
	@Override
	public TeacherVO getTeacherInfobyId(TeacherVO tvo) throws SQLException {
		return teacherOfmemberDaoImpl.getTeacherInfobyId(tvo);		
	}	
/////////////////////////////////////////////////////////////////
	@Override
	public void withdrawalMember(MemberVO mvo) throws SQLException {
		// TODO Auto-generated method stub
		if(mvo.getMembertype().equals("s")){
			studentOfmemberDao.withdrawalMember(mvo);
		}else if(mvo.getMembertype().equals("t")){
			teacherOfmemberDao.withdrawalMember(mvo);
		}
	}

////////////////////////////지훈/////////////////////////////////////
	/**
	 * 회원 이름과 이메일로 아이디를 찾아온다.
	 * 학생과 선생님 조건문으로 모두 확인
	 */
	@Override
	public String findIdByNameEmail(MemberVO mvo) throws SQLException {
		String id=studentOfmemberDao.findIdByNameEmail(mvo);
		System.out.println("service:"+id);
		if(id==null){
			id=teacherOfmemberDao.findIdByNameEmail(mvo);
			if(id==null){
				id="등록된 아이디가 없습니다.";
			}
		}
		return id;
	}
	@Override
	public MemberListVO getListForAdmin(String pageNo) throws SQLException {
		// TODO Auto-generated method stub
		MemberListVO svo=new MemberListVO();
		studentOfmemberDao.getListForAdmin(pageNo);
		return svo;
	}
	/**
	 * 아이디와 이메일로 패스워드 질문 가져오기
	 * 학생과 선생님 조건문으로 모두 확인
	 */
	@Override
	public MemberVO findQPassByIdEmail(MemberVO mvo) throws SQLException {
		// TODO Auto-generated method stub
		MemberVO mvo1=studentOfmemberDao.findQPassByIdEmail(mvo);
		System.out.println("Qpass stu:"+mvo1);
		if(mvo1==null){
			mvo1=teacherOfmemberDao.findQPassByIdEmail(mvo);
			System.out.println("Qpass tea:"+mvo1);
		}
		return mvo1;
	}

	/**
	 * 패스워드 질문과 패스워드 질문의 답변으로 패스워드 가져오기
	 * 학생과 선생님 조건문으로 모두 확인
	 */
	@Override
	public String findPasswordByQnAPass(MemberVO mvo) throws SQLException {
		String password=studentOfmemberDao.findPasswordByQnAPass(mvo);
		System.out.println(("password stu:"+password));
		if(password==null){
			password=teacherOfmemberDao.findPasswordByQnAPass(mvo);
			System.out.println("password tea:"+password);
		}
		return password;
	}
	/**
	 * 비밀번호찾기 검색에서 셀렉트박스에 보여줄 문제명을 codeMaster에서 가져온다.
	 */
	@Override
	public List<CodeVO> passwordList() throws SQLException {
		List<CodeVO> listVo=codeDao.getCodeList("G000");
		return listVo;
	}
	@Override
	public  MyHelpListVO myHelpList(MyHelpVO myHelpVO) throws SQLException {
		if(myHelpVO.getPageNo() ==null){// null 이 아니면 int 형으로 변환한 후 페이지 번호를 할당한다. 
			myHelpVO.setPageNo("1");	//페이지번호를 1로 setting
		}
		//System.out.println("나의 문의 내역 페이지 : "+myHelpVO.getPageNo());
		List<?> mhlist=studentOfmemberDao.getMyHelpList(myHelpVO);
		int total=mhlist.size();
		PagingBean pagingBean=new PagingBean(total, Integer.parseInt(myHelpVO.getPageNo()));
		return  new MyHelpListVO(mhlist, pagingBean);

	}
	/**
	 * 전체 학생 리스트를 페이지당 10개씩
	 */
	@Override
	public StudentListVO getStudentListOrderByName(String pageNo)
			throws SQLException {
		//페이지 값이 없을 경우
		if(pageNo==null||pageNo=="") 
			pageNo="1";
		List<StudentVO> list=studentOfMemberDaoImpl.getStudentListOrderByName(pageNo);
		System.out.println("listVO:"+list);
		int total=studentOfMemberDaoImpl.totalStudentContent();
		System.out.println("total:"+total);
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		StudentListVO slvo=new StudentListVO(list,paging);
		return slvo;
	}

	/**
	 * 전체 선생님 리스트를 페이지당 10개씩
	 */
	@Override
	public TeacherListVO getTeacherListOrderByName(String pageNo)
			throws SQLException {
		//페이지 값이 없을 경우
		if(pageNo==null||pageNo=="") 
			pageNo="1";
		List<TeacherVO> list=teacherOfmemberDaoImpl.getTeacherListOrderByName(pageNo);
		System.out.println("listVO:"+list);
		int total=teacherOfmemberDaoImpl.totalTeacherContent();
		System.out.println("total:"+total);
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		TeacherListVO tlvo=new TeacherListVO(list,paging);
		return tlvo;
	}

	@Override
	public StudentListVO getStudentListOrderByDate(String pageNo)
			throws SQLException {
		if(pageNo==null||pageNo=="") 
			pageNo="1";
		List<StudentVO> list=studentOfMemberDaoImpl.getStudentListOrderByDate(pageNo);
		System.out.println("listVO:"+list);
		int total=studentOfMemberDaoImpl.totalStudentContent();
		System.out.println("total:"+total);
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		StudentListVO slvo=new StudentListVO(list,paging);
		return slvo;
	}

	@Override
	public TeacherListVO getTeacherListOrderByDate(String pageNo)
			throws SQLException {
		if(pageNo==null||pageNo=="") 
			pageNo="1";
		List<TeacherVO> list=teacherOfmemberDaoImpl.getTeacherListOrderByDate(pageNo);
		System.out.println("listVO:"+list);
		int total=teacherOfmemberDaoImpl.totalTeacherContent();
		System.out.println("total:"+total);
		PagingBean paging=new PagingBean(total,Integer.parseInt(pageNo));
		TeacherListVO tlvo=new TeacherListVO(list,paging);
		return tlvo;
	}

	@Override
	public List<StudentVO> getStudentListForLeft() throws SQLException {
		return studentOfMemberDaoImpl.getStudentListForLeft();
	}

	@Override
	public List<TeacherVO> getTeacherListForLeft() throws SQLException {
		return teacherOfmemberDaoImpl.getTeacherListForLeft();
	}

}
